Presently, when loading program codes on a computing device to execute an action, the server often has to upload a large number of module codes to the computing device, a portion of which module codes may not be even required to execute a specific action required by a user.
Conventionally, the modules on which a running of a computing device computer program depends, may be downloaded from a remote information storage medium (such as a server information storage medium) to a local information storage medium, either statically or dynamically.
Static loading refers to automatically loading, at the time the computer program itself is initially loaded, all modules on which the computer program is nominally dependents; that is to say, all modules which may be required by any instance of the computer program to successfully handle any potential state or circumstance which that computer program may encounter.
Dynamic loading, on the other hand, refers to loading one or more of the modules at runtime based on an explicit program instruction of the computer program. For example, a computer game which allows a user to play either a game of poker or a game of solitaire may nominally require both a poker module and a solitaire module in order to successfully handle all potential user interactions, even though the user may ultimately decide only to play poker.
Under a static loading paradigm, both the poker module and the solitaire module would be uploaded to the local information storage memory of the computing device on initial loading of the computer game. Alternatively, under a dynamic loading paradigm, the computer game could have been programmed to load neither the poker module nor the solitaire module initially, but then explicitly load the poker module when the program reaches a state wherein the user has chosen to play poker.
Static and dynamic loading each present advantages and disadvantages. In the case of static loading, the main advantage lies in the guarantee that all modules that may be needed are already available to the computing device, thus ensuring that the computer program is responsive; however, this advantage comes at the expense of a potentially extensive data transfer traffic, since all of the modules are automatically loaded, potentially including some (or many) whose program instructions are never actually executed. Conversely, dynamic loading provides the advantage of a potentially lesser traffic. However, dynamic loading still may need preloading module code indexes (maps or the tables of contents of available modules for a specific software). The whole index for a complicated apparat programming interface, for example, can be relatively large as it can depict many modules dependencies, data permissions etc.
U.S. Pat. No. 8,626,919 B1 teaches a system that executes an application. During operation, the system obtains a resource list associated with the application and stores a set of resources including a native code module from the resource list through communications over a network connection, wherein the resources are stored in persistent local storage. The application then loads the application in the web browser and loads the native code module into a secure runtime environment. Next, the application executes the application independently of the network connection using the native code module and the stored resources.
U.S. Pat. No. 8,676,978 B2 teaches a method including accessing a resource list associated with a structured document loaded by a client application executing within a client device; identifying a first set of resources referenced in the resource list that are stored within a storage space of the client device; retrieving the first set of resources from the storage space; loading the first set of resources into a model representation of the structured document generated by a client document-rendering application for rendering by the client document-rendering application; identifying a second set of resources referenced in the resource list that are not stored within the storage space of the client device; formulating and transmitting one or more requests for the second set of resources; receiving the second set of resources in response to the requests; and loading the second set of resources into the model representation for rendering by the client document-rendering application.
US 2014/0096110 A1 teaches method, system, and/or computer program product managing a set of software modules in a software runtime environment, where the set of software modules has one or more dynamic dependencies and one or more static dependencies. Each software module having a static dependency on another software module in a set of software modules is identified. Each subset of the set of software modules that is interdependent with another subset due to static dependencies between subsets is identified. In response to a change in state of a module in an identified subset, the change in state is applied to all modules in the identified subset.